安装LAMMPS

您所在的位置:网站首页 pwmat 中文手册 安装LAMMPS

安装LAMMPS

2023-08-22 10:46| 来源: 网络整理| 查看: 265

# 安装LAMMPS

本节教程定位到手册 (opens new window)的install & Build LAMMPS两节。

由于软件的复杂性和配置的多样性,不建议使用除linux以外的操作系统,不建议使用预编译包。本教程为了简明起见,以Ubuntu18.04 LTS 为例,若使用CentOS,请照葫芦画瓢,手动升级编译器和相关依赖。我们强烈建议选择使用cmake安装LAMMPS, 而不是去使用Makefile

源代码内容:

文件夹名 描述 README 介绍 LICENSE GPL协议 bench 基准测试相关 cmake CMake编译相关 doc 文档相关 examples 示例相关 lib 外部库相关 potential 势函数相关 python python接口相关 src 源码相关 tools 数据前后处理相关 # 从GitHub下载源代码

使用git命令直接从Github上拉取代码

git clone https://github.com/lammps/lammps.git 1# 从官方网站下载源代码

在官方网站 (opens new window)上下载压缩包

# 使用CMake编译LAMMPS

我们强烈建议使用CMake编译。原因在于CMake可以自动检测当前环境和所依赖的库路径,还可以使用预配置文件。

同时我们将展示GPU加速包的编译,这个包并不影响正常使用,可以跳过。

# 安装依赖 apt install build-essential apt install cmake apt install gfortran apt update apt upgrade 12345

FFTW,快速傅里叶变换所需的软件包,如果没有安装其他版本,将会使用LAMMPS自带;如果有其他版本,CMake将会自动检测。

安装并行LAMMPS所需的并行框架mpich,若使用OpenMpi请举一反三。首先去官方网站 (opens new window)下载mpich3的源码,然后

tar -zxvf mpich3.tar.gz #解压缩 ./configure --enable-shared=yes #--enable-shared=yes是必不可少的参数;如果安装到其他路径,注意环境变量的问题。 make make install 1234# 编译LAMMPS cd lammps #进入源码根目录 mkdir build cd build 123

这里我们需要讨论一下如何选择需要编译的包。众所周知,巴比塔不是一伙人建成的,同样,LAMMPS开发组也不会事必躬亲,所以肯定要借助别人的代码来完善功能。由于这些代码的贡献者不同,因此很多功能不能合并到主线当中;又或者是有些包是只有少部分人会用到或者还要依赖其他的工具,因此给出了一个选项,允许各位选择什么包需要编译,什么包不需要。这个文件就叫*.cmake*。

什么是编译?

我们打开这个cmake文件,它位于根目录下的cmake文件夹的presets中:

# lammps/cmake/presets/minimal.cmake # 预设文件只打开了少量常用的包,使得编译速度最快且大部分脚本可以使用 set(ALL_PACKAGES KSPACE MANYBODY MOLECULE RIGID) foreach(PKG ${ALL_PACKAGES}) set(PKG_${PKG} ON CACHE BOOL "" FORCE) endforeach() 123456789

这几行代码是 不言自明 的。很显然,set()声明了一个名为ALL_PACKAGE 的集合,集合中包括了一些包的名称。然后在一个foreach循环中,将ALL_PACKAGE的包全部ON。因此如果你需要加减什么包,可以自行从这个集合中添加或者移除。presets里同时还提供了其他的预设文件可供参考。

cmake -C ../cmake/presets/minimal.cmake ../cmake 1# 使用Cuda加速

Author:黄诚斌

安装NVIDIA驱动 查询电脑显卡型号, 根据维基百科(https://en.wikipedia.org/wiki/CUDA#GPUs_supported) 上的信息查找自己显卡对应的架构, 以及对应的CUDA版本

首先安装Nvidia显卡驱动 (opens new window)和Nvidia CUDA Toolkit (opens new window)两个驱动, 事实上如果是Ubuntu系统, 可以直接在software&updater中选择显卡所使用的驱动. 检查是否成功:

nvidia-setting nvidia-smi watch -n 5 nvidia-smi #每5秒输出一次显卡状态 123

安装完成后将编译器位置添加到环境变量中. 打开.bashrc 添加export PATH=$PATH:/usr/local/cuda-10.2/bin保存文件后执行nvcc -V,如果输出正常,即代表安装成功.

如果出现"binary2txt"相关的错误一定与环境变量有关系

请在cmake的时候加上以下参数:

-D PKG_GPU=on # include GPU package -D GPU_API=cuda # value = opencl (default) or cuda -D GPU_PREC=mixed # precision setting # value = double or mixed (default) or single -D GPU_ARCH=value # hardware choice for GPU_API=cuda # value = sm_XX, see below # default is Cuda-compiler dependent, but typically sm_20 -D CUDPP_OPT=value # optimization setting for GPU_API=cuda # enables CUDA Performance Primitives Optimizations # yes (default) or no 12345678910

例如:

cmake -C ../cmake/presets/minimal.cmake -DPKG_GPU=on -DGPU_API=cuda -DGPU_ARCH=sm_61 ../cmake 1

注意这里精度最好使用混合精度

# 调用GPU来做加速,仅需要加入-sf -pk两个flag mpirun -np 8 lmp_gpu -sf gpu -pk gpu 1 -in in.file # -sf指在所有支持gpu加速的脚本命令前加上gpu前缀 # 注意这里-pk gpu后跟的是节点数,几块gpu就填几 1234567

可以通过修改presets下的预置文件来决定哪些包需要安装。更多的参数选择请查看 (opens new window)。待配置完成后会出现配置结果详情,确认后:

make make install 12

请注意,此时cmake 文件夹下会有一个名为lmp的可执行文件,此文件就是最终编译结果。如果您看这个名字不爽可以自行重命名,以后开始计算所调用命令就以新名称替换。教程以下均使用lmp/lmp_mpi/lmp_serial/lmp_gpu代指此文件。

# 使用kokkos加速

本节教程定位到手册 (opens new window)和安装详情 (opens new window)两节。

LAMMPS中很多的style, 都没有专门的cuda加速代码. 这时我们可以使用kokkos库, 将C++代码转化为OpenMP或者CUDA代码, 在多核系统运行. 在手册中, 所有带有/kk前缀的命令都可以通过这个库跑在并行系统上, 只需要在运行时像CUDA加上-sf kk 这样的参数即可.

因为kokkos使用了大量的新特性, 因此前提是必须有C++11的编译器. 安装kokkos的方法很多, 我们从自动到手动来介绍. 在编译的过程中, 需要选择主机上是否并行和需要选择用来负责计算的设备(offload of calculations to a device). 默认这两个选项都是关闭的. 此外, 指定的硬件的架构必须要和本机匹配. 由于硬件都是向前兼容的, 所以老版本的编译出的文件可以跑在新架构上.

首先是尽量保证kokkos的GPU架构和LAMMPS的GPU包一致; 如果不一致的话, 在计算开始时的初始化阶段会有一个延迟, 为新硬件编译GPU核心. 如果GPU的大版本不对, 例如5.2和6.0这样, 就会出问题. 简而言之, 好好设置重新编译一遍不费事, 别找麻烦.

为了简化安装, 在cmake/presets下有三个预配置文件:kokkos-serial.cmake, kokkos-openmp.cmake, kokkos-cuda.cmake. 可以连用cmake中的-Cflage来叠加使用配置

cmake -C ../cmake/presets/minimal.cmake -C ../cmake/presets/kokkos-cuda.cmake ../cmake 1

编译配置完成后接着编译

make -j8 make install 12

This wraps an nvcc, allowing it to be treated as a real C++ compiler with all the usual flags.

# 使用传统的Make安装

使用makefiles编译需要和系统搭配的Makefile.文件, 比如说src/MAKE里的各种, 其中包含着编译时的选项和特性. Make方法是最传统的方法, 但是似乎相对于CMake没有优势.

# 要求

以下的操作都是在GNU make下进行的, 如果不是GNU make的话最好是先安装或者转到CMake方法.

支持C++11的编译器. Linux下通常是GNU的编译器, 一些老的编译器可能需要-std=c++11切换到C++11模式; # 安装

在编译之前, 你需要手动指定需要编译的包, 使用make yes-来添加. 其中是需要的包名. 你可以用make package查看有哪些包需要编译.

使用以下命令可以执行默认的LAMMPS编译, 在lammps/src下生成lmp_serial和lmp_mpi:

cd lammps/src make -jN # 命令格式, -jN指用N个核编译 make serial # 编译串行的LAMMPS执行文件 make mpi # 编译并行的LAMMPS执行文件 make # 查看make帮助 12345

编译需要很长时间, 因此可以使用make -j N来并行编译. 同时, 安装ccache (opens new window)可以在,例如代码开发重复编译时节省时间.

在第一遍编译完之后, 任何时候重新编辑了LAMMPS代码, 增添或删除文件, 都需要重新编译和重新链接LAMMPS可执行文件到同样的make 命令上. makefile的追踪只保证那些需要重新编译的文件呗重新编译, 因此如果你改动了makefile, 你需要重新编译整个包. 清空环境需要用make clean-.

编译之前, LAMMPS会手机配置信息, 然后编入到应用程序中. 当你第一次编译LAMMPS时, 会编译一个收集各种依赖的工具. 这可以有效地检测到有哪些模块或者源代码需要重新编译.

# 客制化编译和可选的makefiles

src/MAKE中有一些形如Makefile.的文件. 使用make example以使用Makefile.example. 因此, 以上的make serial和make mpi分别使用了src/MAKE/Makefile.serial和src/MAKE/Makefile.mpi. 其他的makefile在这些文件夹中:

OPTIONS # 关于可以用的特殊设置 MACHINES # 针对特殊的机器 MINE # 你自己的特殊设定 123

在makefile文件中, 包含了LAMMPS编译需要的参数和信息, 因此如果手动指定某些参数, 需要修改makefile.

本节教程定位到手册 (opens new window)的 Optional build settings 一节.

例如我需要指定int数据的字节数, 而不是默认的4比特(21字节). 打开需要用的makefile, 例如我将用make mpi命令编译, 就打开Makefile.mpi, 在31行找到LMP_INC关键字, 在其后加上-DLAMMPS_BIGBIG, 保存, 回到src下使用make mpi编译.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3